Skip to content

Latest commit

 

History

History
39 lines (30 loc) · 2.79 KB

README.md

File metadata and controls

39 lines (30 loc) · 2.79 KB

7장 오류 처리

뭔가 잘못될 가능성은 늘 존재한다.
뭔가 잘못되면 바로 잡을 책임은 바로 우리 프로그래머에게 있다.
- 130p -

오류 코드보다 예외를 사용하라

  • 호출자에게 오류 코드를 반환하는 방식은 함수를 호출한 즉시 오류를 확인해야 하기 떄문에 호출자 코드가 복잡해진다.
  • 오류가 발생하면 예외를 던지는 방식은 논리와 오류 처리 코드를 분리해 코드를 더 깔끔하게 작성할 수 있다.

Try-Catch-Finally 문부터 작성하라

  • try 블록에서 무슨 일이 생기든 catch 블록은 프로그램을 일관성 있게 유지해야 한다.
  • 테스트 케이스는 강제로 예외를 일으키는 경우를 먼저 작성한 후에 통과하는 코드를 작성한다.

미확인 예외를 사용하라

  • 확인된 예외는 OCP(Oepn Closed Principle)을 위반한다. 확인된 예외로 인해 하위 함수에서 상위 함수까지의 연쇄적 수정이 필요해질 수 있다.
  • 확인된 예외는 때로는 유용하지만 의존성 비용에 상응하는 이익을 제공하는지 따져보고 사용해야 한다.

예외에 의미를 제공하라

  • 예외를 던질 땐 전후 상황을 충분히 덧붙인다.
  • 오류 메시지에 실패한 연산 이름, 실패 유형 등 정보를 담아 예외와 함꼐 던진다.

호출자를 고려해 예외 클래스를 정의하라

  • 오류를 분류하는 방법은 수없이 많지만 애플리케이션에서 오류를 정의할 때 프로그래머에게 가장 중요한 건 오류를 잡아내는 방법이 되어야 한다.
  • 오류 처리는 비교적 일정한 방법으로 진행된다. 대부분은 오류를 기록하고 프로그램을 계속 수행해도 좋은지 확인한다.
  • 기존 클래스를 감싸서 원하는 방식의 예외로 변환해주는, 감싸기 기법은 의존성을 크게 줄여준다.

정상 흐름을 정의하라

  • 특수 사례 패턴(Special Case Pattern)은 클래스를 만들거나 객체를 조작해 특수 사례를 처리하는 방식으로 클래스나 객체가 예외적인 상황을 처리하게끔하여 클라이언트 코드가 예외적 상황을 처리할 필요가 없게끔 해준다.

null 을 반환하지 마라

  • null 을 반환하는 코드는 일거리를 늘리고 호출자에게 문제를 떠넘긴다.
  • null 대신 예외를 던지거나 특수 사례 객체를 반환하자.

null 을 전달하지 마라

  • 정상적인 인수로 null을 기대하는 API가 아니라면 메서드로 null을 전달하지 말자.

결론

  • 깨끗한 코드는 읽기도 좋아야 하지만 안정성도 높아야 한다.
  • 오류 처리를 프로그램 논리와 분리하면 독립적인 추론이 가능해지고 유지보수성도 크게 높아진다.